<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        let _sex = '男';
        class Person{
            constructor(name,age){
                this.name = name;
                this.age = age;
                // this.sex = sex;
            }
            // get定义的私有属性不能直接被更改  属性名为get后面的函数名  属性值是该函数的返回值
            get sex(){
                // console.log('定义属性sex')
                return _sex;
            }
            //拦截器
            set sex(value){
                console.log(value);
                _sex = value;
            }
        }

        let p1 = new Person('tom',12,'nan');
        console.log(p1);
        // p1.age = 20;
        // set平时不会触发，当你改变set监听的属性，发生改变时，就会触发
        p1.sex = '女';
        console.log(p1);
        // 有些时候你是不希望别人随便对某些属性值进行随意更改  私有属性


    </script>
</body>
</html>